package com.nari.ncps.screen.service.coal;

import com.baomidou.mybatisplus.extension.service.IService;
import com.nari.ncps.screen.entity.coal.CoalProdoperStock;
import com.nari.ncps.screen.vo.coal.CoalInventoryTrendVO;
import com.nari.ncps.screen.vo.coal.CoalInventoryUnitsVO;
import com.nari.ncps.screen.vo.wholeproduct.AnnualStockVO;
import com.nari.ncps.screen.vo.wholeproduct.CoalStockDetailVO;
import com.nari.ncps.screen.vo.wholeproduct.CoalStockYoyVO;

import java.util.List;

/**
 * <p>
 * 生产经营煤炭库存表 服务类
 * </p>
 *
 * @author xuesong
 * @since 2025-08-23
 */
public interface CoalProdoperStockService extends IService<CoalProdoperStock> {

    /**
     * 获取煤炭库存量趋势
     * @param year 年份，如果为null则使用当前年份
     * @return 煤炭库存量趋势列表（最近6个月）
     */
    List<CoalInventoryTrendVO> getInventoryTrend(Integer year);

    /**
     * 获取各单位煤炭库存情况
     * @param year 年份，如果为null则使用当前年份
     * @return 各单位煤炭库存列表
     */
    List<CoalInventoryUnitsVO> getInventoryByUnits(Integer year);

    /**
     * 获取年度库存量情况
     * @param year 年份，如果为null则返回所有年份数据
     * @return 年度库存量列表（最近5年）
     */
    List<AnnualStockVO> getAnnualStock(Integer year);

    /**
     * 获取最新库存量情况
     * @param year 年份，如果为null则返回所有年份数据
     * @return 年度库存量列表（最近5年）
     */
    List<AnnualStockVO> getAnnualStockNow(Integer year);


    /**
     * 获取煤炭库存详情
     * @param year 年份，如果为null则使用当前年份
     * @return 煤炭库存详情（包含本月、上月库存及环比等）
     */
    CoalStockDetailVO getCoalStockDetail(Integer year);

    /**
     * 获取煤炭库存同比情况
     * @param year 年份，如果为null则使用当前年份
     * @return 煤炭库存同比详情（包含本月、去年同期库存及同比率等）
     */
    CoalStockYoyVO getCoalStockYoy(Integer year);

}
